/**
 * 获取文件名和后缀
 * @param {String} name
 */
export const get_file_ext = (name) => {
    const last_len = name.lastIndexOf('.')
    const len = name.length
    return {
        name: name.substring(0, last_len),
        ext: name.substring(last_len + 1, len)
    }
}

/**
 * 获取扩展名
 * @param {Array} fileExtname
 */
export const get_extname = (fileExtname) => {
    if (!Array.isArray(fileExtname)) {
        let extname = fileExtname.replace(/(\[|\])/g, '')
        return extname.split(',')
    } else {
        return fileExtname
    }
    return []
}

/**
 * 获取文件和检测是否可选
 */
export const get_files_and_is_max = (res, _extname) => {
    let filePaths = []
    let files = []
    if (!_extname || _extname.length === 0) {
        return {
            filePaths,
            files
        }
    }
    res.tempFiles.forEach(v => {
        let fileFullName = get_file_ext(v.name)
        const extname = fileFullName.ext.toLowerCase()
        if (_extname.indexOf(extname) !== -1) {
            files.push(v)
            filePaths.push(v.path)
        }
    })
    if (files.length !== res.tempFiles.length) {
        uni.showToast({
            title: `当前选择了${res.tempFiles.length}个文件 ，${res.tempFiles.length - files.length} 个文件格式不正确`,
            icon: 'none',
            duration: 5000
        })
    }

    return {
        filePaths,
        files
    }
}


/**
 * 获取图片信息
 * @param {Object} filepath
 */
export const get_file_info = (filepath) => {
    return new Promise((resolve, reject) => {
        uni.getImageInfo({
            src: filepath,
            success(res) {
                resolve(res)
            },
            fail(err) {
                reject(err)
            }
        })
    })
}
/**
 * 获取封装数据
 */
export const get_file_data = async (files, type = 'image') => {
    // 最终需要上传数据库的数据
    let fileFullName = get_file_ext(files.name)
    const extname = fileFullName.ext.toLowerCase()
    let filedata = {
        name: files.name,
        uuid: files.uuid,
        extname: extname || '',
        cloudPath: files.cloudPath,
        fileType: files.fileType,
        url: files.path || files.path,
        size: files.size, //单位是字节
        image: {},
        path: files.path,
        video: {}
    }
    if (type === 'image') {
        const imageinfo = await get_file_info(files.path)
        delete filedata.video
        filedata.image.width = imageinfo.width
        filedata.image.height = imageinfo.height
        filedata.image.location = imageinfo.path
    } else {
        delete filedata.image
    }
    return filedata
}
